package cn.com.lyb.flink.combine;

import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

/**
 * 最简单的合流操作，就是直接将多条流合在一起，叫作流的“联合”（union）。联合操作要求必须流中的数据类型必须相同，合并之后的新流会包括所有流中的元素，数据类型不变。
 */
public class UnionDemo {

    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);

        DataStreamSource<Integer> source1 = env.fromElements(1,2,3,4,5);

        DataStreamSource<Integer> source2 = env.fromElements(11,22,33,44,55);

        DataStreamSource<String> source3 = env.fromElements("111", "222");
        // 合并数据流  数据类型必须一致， union一次性可以合并多个
        // source1.union(source2).union(source3.map(r->Integer.valueOf(r))).print();
        source1.union(source2, source3.map(Integer::valueOf)).print();
        env.execute();
    }
}
